class Falcon5UrlSlug {
    /**
     * 初始化URL转换器
     */
    constructor() {
        if (!falcon5_ajax_config || !falcon5_ajax_config.ajax_url) {
            console.error('falcon5_ajax_config not found or invalid');
            return;
        }

        const langPattern = 'af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-cn|zh-tw|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu|zh-tw|zh-cn';
        const langRegex = new RegExp(`^(${langPattern})$`, 'i');

        // 检查路径中的语言标识
        const pathSegments = window.location.pathname.split('/').filter(Boolean);
        const pathLang = pathSegments[0] && langRegex.test(pathSegments[0]) ? pathSegments[0] : null;

        // 检查子域名中的语言标识
        const hostname = window.location.hostname;
        const hostParts = hostname.split('.');
        const subdomainLang = (hostParts.length > 2 && langRegex.test(hostParts[0])) ? hostParts[0].toLowerCase() : null;

        // 优先使用路径中的语言标识
        const targetLang = pathLang || subdomainLang;
        
        if (targetLang) {
            // 获取纯路径（去除语言标识）
            let purePath;
            if (pathLang) {
                // 如果语言在路径中，需要过滤掉语言段
                purePath = '/' + pathSegments.filter(segment => !langRegex.test(segment)).join('/');
            } else {
                // 如果语言在子域名中，直接使用当前路径
                purePath = window.location.pathname;
            }

            // 确保路径末尾的斜杠保持一致
            // if (window.location.pathname.endsWith('/') && !purePath.endsWith('/')) {
            //     purePath += '/';
            // }

            this.translateUrl(purePath, targetLang);
        }
    }

    /**
     * 转换URL并更新浏览器地址栏
     * @param {string} currentPath - 当前URL路径（不含语言代码）
     * @param {string} targetLang - 目标语言代码
     */
    translateUrl(currentPath, targetLang) {
        fc5_utils.showLoading();
        fc5_utils.post(
            falcon5_ajax_config.ajax_url,
            {
                action: 'entry_translate_url',
                path: currentPath,
                original_path: currentPath,
                translated_lang: targetLang
            },
            (response) => {
                fc5_utils.hideLoading();
                if (response.code === 1 && response.data) {
                    // 保存源URL到HTML中，供语言切换器使用
                    document.documentElement.setAttribute('data-original-path', response.data.slug);
                    
                    // 保持原有的URL格式（子域名或子目录）
                    const isSubdomainMode = !window.location.pathname.startsWith('/' + targetLang + '/');
                    
                    if (isSubdomainMode) {
                        // 子域名模式：只更新路径部分
                        window.history.replaceState({ 
                            path: response.data.slug_translated,
                            originalPath: response.data.slug
                        }, "", response.data.slug_translated);
                    } else {
                        // 子目录模式：拼接语言标识和翻译后的路径
                        const finalPath = '/' + targetLang + response.data.slug_translated;
                        window.history.replaceState({ 
                            path: finalPath,
                            originalPath: response.data.slug
                        }, "", finalPath);
                    }
                } else {
                    console.error('URL translation failed:', response.msg || 'Unknown error');
                }
            },
            (error) => {
                fc5_utils.hideLoading();
                console.error('Request failed:', error);
            }
        );
    }
}

// 当DOM加载完成后初始化URL转换器
document.addEventListener('DOMContentLoaded', () => {
    new Falcon5UrlSlug();
});
